import { defineStore } from 'pinia';

export const useCartStore = defineStore('cartStore', {
    state: () => ({
        checkAllIsCheck: false,
        OrderItem: [
            // {
            //     id: 1,
            //     picture: "/public/images/cart/commodity.png",
            //     trade: "Diamond family wedding",
            //     goodsStyle: "22H | Full HD | VA",
            //     price: 20.67,//单价 
            //     sumPrice: 0,//每一项的总金额
            //     count: 0,
            //     isCheck: false
            // },
            // {
            //     id: 2,
            //     picture: "/public/images/cart/commodity.png",
            //     trade: "Diamond family wedding",
            //     goodsStyle: "22H | Full HD | VA",
            //     price: 38.53,
            //     sumPrice: 0,
            //     count: 0,
            //     isCheck: false
            // },
            // {
            //     id: 3,
            //     picture: "/public/images/cart/commodity.png",
            //     trade: "Diamond family wedding",
            //     goodsStyle: "22H | Full HD | VA",
            //     price: 11.78,
            //     sumPrice: 0,
            //     count: 0,
            //     isCheck: false
            // },
            // {
            //     id: 4,
            //     picture: "/public/images/cart/commodity.png",
            //     trade: "Diamond family wedding",
            //     goodsStyle: "22H | Full HD | VA",
            //     price: 24.23,
            //     sumPrice: 0,
            //     count: 0,
            //     isCheck: false
            // },
            // {
            //     id: 5,
            //     picture: "/public/images/cart/commodity.png",
            //     trade: "Diamond family wedding",
            //     goodsStyle: "22H | Full HD | VA",
            //     price: 78.22,
            //     sumPrice: 0,
            //     count: 0,
            //     isCheck: false
            // },
        ]
    }),

    getters: {
        // 过滤count=0的商品
        equalfilterCount: (state) => {
            return state.OrderItem.filter((item) => item.count == 0)
        },
        // 过滤count>0的商品
        plusfilterCount: (state) => {
            return state.OrderItem.filter((item) => item.count > 0)
        },

        // 获取选购的所有总数量
        totalCount: (state) => {
            // 如果都没选中,总数量为0
            if (state.plusfilterCount.length <= 0) return 0
            // 如果选中了商品，计算总数量
            return state.plusfilterCount.reduce((result, item) => result + item.count, 0)
        },
        // 计算总金额
        amount: (state) => {
            // 如果都没选中,总金额为0
            if (state.plusfilterCount.length <= 0) return 0
            // 如果购物车有商品，计算总金额
            return Number(state.OrderItem.reduce((result, item) => result + item.sumPrice, 0)).toFixed(2)
        }

    },

    actions: {
        // 点击减号
        sub(item) {
            // 如果count<=1,该项不被选中
            if (item.count <= 1) {
                item.isCheck = false
            }
            // 如果count<=0,不再让其--
            if (item.count <= 0) return
            item.count--
            item.sumPrice = Number(Number(item.price * item.count).toFixed(2))
        },
        // 点击加号
        plus(item) {
            item.count++
            // 如果count>0,该项被选中,并且计算sumPrice
            if (item.count > 0) {
                item.isCheck = true
                item.sumPrice = Number(Number(item.price * item.count).toFixed(2))
            }
        },
        checkAll() {
            // 全选
            if (this.checkAllIsCheck == false) {
                this.OrderItem.forEach(item => {
                    item.isCheck = true
                    item.count = 1
                    item.sumPrice = Number(Number(item.price * item.count).toFixed(2))
                });
            } else {
                // 全不选
                this.OrderItem.forEach(item => {
                    item.isCheck = false
                    item.count = 0
                    item.sumPrice = 0
                });
            }
        },
        checkOne(item) {
            // 传id进来，如果该项没有被选中根据id将对应的isCheck改为true，并且数量变为1,price赋值给sumPrice
            if (item.isCheck == false) {
                item.isCheck = true
                item.count = 1
                item.sumPrice = item.price
            } else {
                item.isCheck = false
                item.count = 0
                item.sumPrice = 0
            }
            // 如果全选中则checkAllIsCheck为true，否则为false
            if (this.OrderItem.every((item) => {
                return item.isCheck == true
            })) {
                this.checkAllIsCheck = true
            } else {
                this.checkAllIsCheck = false
            }
        }

    }
})